package com.tte.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @Description: 跨域
 * @Author: DongWH
 * @Date: 2023/4/24 14:41
 */

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // 所有接口
                .allowCredentials(true) // 是否发送 Cookie
                .allowedOriginPatterns("*") // 支持域
                .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"}) // 支持方法
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}


//https://blog.csdn.net/m0_71777195/article/details/126830773
//    通过 CorsFilter 跨域
//    此实现方式和上一种实现方式类似，它也可以实现全局跨域，它的具体实现代码如下：
//import org.springframework.context.annotation.Bean;
//        import org.springframework.context.annotation.Configuration;
//        import org.springframework.web.cors.CorsConfiguration;
//        import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
//        import org.springframework.web.filter.CorsFilter;
//
//@Configuration // 一定不能忽略此注解
//public class MyCorsFilter {
//    @Bean
//    public CorsFilter corsFilter() {
//        // 1.创建 CORS 配置对象
//        CorsConfiguration config = new CorsConfiguration();
//        // 支持域
//        config.addAllowedOriginPattern("*");
//        // 是否发送 Cookie
//        config.setAllowCredentials(true);
//        // 支持请求方式
//        config.addAllowedMethod("*");
//        // 允许的原始请求头部信息
//        config.addAllowedHeader("*");
//        // 暴露的头部信息
//        config.addExposedHeader("*");
//        // 2.添加地址映射
//        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
//        corsConfigurationSource.registerCorsConfiguration("/**", config);
//        // 3.返回 CorsFilter 对象
//        return new CorsFilter(corsConfigurationSource);
//    }
//}